\section{Requirements Analysis}
This section describes the first analysis made on the project. It's divided in three subsection: client-side, server-side and optional requirements.
Requirements' development and implementation will be show and explain in the following chapters.

\subsection{Client-side requirements}
Fig. \ref{fig:uc_client} represents the main actions that the client has to perform on the application.\\
A client who want to communicate with a server has to be able to perform these basically requirements:
\begin{itemize}
 \item \emph{Connect} to the server
 \item \emph{Compile} a menu received from the server
 \item \emph{Send} a menu to the server
 \item \emph{Disconnect} and close the communication
\end{itemize}

\subsection{Server-side requirements}
At the same way done for the client, we describe the principal actions (requirements) that a server has to be able
to perform to communicate with a client and respect the correctness of the application as shown on Fig. \ref{fig:uc_server}.
\begin{itemize}
 \item \emph{Confirm}, accept and response a connection request
 \item \emph{Send} a menu to a client
 \item \emph{Receive} an order from a client
 \item \emph{Check} if an order is correct
 \item \emph{Inform} a client if the order is ready (correct so can be withdrawed) or not (incorrect)
\end{itemize}

\subsection{Optional requirements}
In addition to the previous requirements, the following are considered optional by the analysis phase:
\begin{itemize}
 \item \emph{Evaluation} of the waiting-time for an order
 \item Allow to \emph{change an order} in a interval time
 \item \emph{Lost signal} management
\end{itemize}


\begin{figure}[h]
  \centering
  \includegraphics[width=0.5\textwidth]{img/client_usecase_diagram.png}
  \caption{Client usecase diagram}
\label{fig:uc_client}
\end{figure}

\begin{figure}[h]
  \centering
  \includegraphics[width=0.5\textwidth]{img/server_usecase_diagram.png}
  \caption{Server usecase diagram}
\label{fig:uc_server}
\end{figure}
